import request from '../utils/request'
import type { ApiResponse } from './user'

export interface CartItem {
    id: number;
    userId: number;
    productId: number;
    product?: {
        id: number;
        name: string;
        description: string;
        price: number;
        images: string[];
        status: number;
    };
    createdAt: string;
}

/**
 * 获取购物车列表
 * @param params 请求参数
 * @returns Promise<ApiResponse<CartItem[]>>
 */
export function getCartItems(params: { userId: number }) {
    return request.get<CartItem[]>('/cart/list', { params })
}

/**
 * 添加商品到购物车
 * @param params 请求参数
 * @returns Promise<ApiResponse<{ id: number }>>
 */
export function addToCart(params: { userId: number; productId: number }) {
    return request.post<{ id: number }>('/cart/add', params)
}

/**
 * 从购物车删除商品
 * @param params 请求参数
 * @returns Promise<ApiResponse<null>>
 */
export function removeFromCart(params: { userId: number; cartItemId: number }) {
    return request.post<null>('/cart/remove', params)
}

/**
 * 获取购物车商品数量
 * @param params 请求参数
 * @returns Promise<ApiResponse<{ count: number }>>
 */
export function getCartCount(params: { userId: number }) {
    return request.get<{ count: number }>('/cart/count', { params })
}

/**
 * 清空购物车
 * @param params 请求参数
 * @returns Promise<ApiResponse<null>>
 */
export function clearCart(params: { userId: number }) {
    return request.post<null>('/cart/clear', params)
}

/**
 * 检查商品是否已在购物车中
 * @param params 请求参数
 * @returns Promise<ApiResponse<{ exists: boolean }>>
 */
export async function checkProductInCart(params: { userId: number, productId: number }): Promise<ApiResponse<{ exists: boolean }>> {
    return request.get<{ exists: boolean }>('/cart/check', { params });
} 